From: Carlos Garnacho Date: Thu, 11 Feb 2021 23:54:55 +0000 (+0100) Subject: keyboard: Make OSK follow gesture progress X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~616^2^2~297 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c62177e669ae6818fcd6d7f6c545606e290e6139;p=gnome-shell.git keyboard: Make OSK follow gesture progress With all other gestures offering live feedback of progress, seems to make sense to update the "swipe from bottom edge to show OSK" gesture as well. Part-of: --- diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index ae3cdd35c..50a1cd7f4 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -1148,7 +1148,10 @@ var KeyboardManager = class KeyBoardManager { const mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN; const bottomDragAction = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode); bottomDragAction.connect('activated', () => { - this.open(Main.layoutManager.bottomIndex); + this._keyboard.gestureActivate(Main.layoutManager.bottomIndex); + }); + bottomDragAction.connect('progress', (_action, progress) => { + this._keyboard.gestureProgress(progress); }); global.stage.add_action(bottomDragAction); this._bottomDragAction = bottomDragAction; @@ -1725,7 +1728,7 @@ var Keyboard = GObject.registerClass({ this._keyboardRestingId = 0; } - open() { + open(immediate = false) { this._clearShowIdle(); this._keyboardRequested = true; @@ -1734,6 +1737,11 @@ var Keyboard = GObject.registerClass({ return; } + if (immediate) { + this._open(); + return; + } + this._clearKeyboardRestTimer(); this._keyboardRestingId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEYBOARD_REST_TIME, @@ -1835,6 +1843,21 @@ var Keyboard = GObject.registerClass({ Main.layoutManager.keyboardBox.hide(); } + gestureProgress(delta) { + Main.layoutManager.keyboardBox.show(); + let progress = Math.min(delta, this.height) / this.height; + this.translation_y = -this.height * progress; + this.opacity = 255 * progress; + if (this._focusWindow) { + const windowActor = this._focusWindow.get_compositor_private(); + windowActor.translation_y = -this.height * progress; + } + } + + gestureActivate() { + this.open(true); + } + resetSuggestions() { if (this._suggestions) this._suggestions.clear();